---
title: 撤销与恢复
---

## 撤销工作区修改（未 add 前）
```bash
git restore 文件名
# 或
# git checkout -- 文件名
```
- `git restore .`：撤销所有未暂存的修改。
- `git restore --staged 文件名`：将已暂存的文件移出暂存区（相当于 git reset HEAD 文件名）。
- `git restore --source=提交ID 文件名`：将文件恢复到指定提交的状态。

## 撤销暂存区的文件（已 add 但未 commit）
```bash
git reset HEAD 文件名
```
- 仅将文件从暂存区移回工作区，修改内容不会丢失。

## 回退到某次提交（危险操作，慎用）
```bash
git reset --hard 提交ID
```
- `--soft`：仅回退 commit，保留暂存区和工作区内容。
- `--mixed`（默认）：回退 commit 和暂存区，保留工作区内容。
- `--hard`：全部回退，工作区和暂存区内容都丢失。

## 撤销某次提交（保留历史，推荐）
```bash
git revert 提交ID
```
- 会生成一个新的 commit，撤销指定提交的更改，适合公开分支。

## 其他常用撤销命令
```bash
git clean -fd
```
- 删除未被追踪的文件和目录（慎用）。